package ws.bbdd;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

public class bbdd {

	public String consultaBBDD(String tipo, String parametros) throws SQLException{
		try{
			Class.forName("com.mysql.jdbc.Driver");
		} catch ( Exception e){
			e.printStackTrace();
		}
		Connection conexion = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/cloud-rtt","root","root");
		//Connection conexion = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/cloud-rtt","root","FUN,SQl*");

		//"FUN,SQl*"
		Statement st = (Statement) conexion.createStatement();
		//System.out.println("BBDD: Conexi�n establecida");
	
	ResultSet resultado2 = null;
	int resultado = 0;
	String consulta = "";
	String respuesta = "";
	String[] param = parametros.split("#");
	switch (Integer.parseInt(tipo)){
	case 10:	//autentificarse
		String pass="";
		consulta = "SELECT * FROM users WHERE userID='"+param[0]+"'";
		resultado2 = st.executeQuery(consulta);
		while(resultado2.next()){
			pass = resultado2.getString("password");
		}
		if(pass.equals(param[3])){
			respuesta = "USERLOGIN#TRUE";
			//System.out.println("BBDD-10: User "+param[0]+" Login TRUE");
			//actualizamos usuario si OK
			consulta = "UPDATE users SET webSocket='"+param[1]+"' WHERE userID='"+param[0]+"'";
			resultado = st.executeUpdate(consulta);
			//System.out.println("BBDD-10: Actualizamos webSocket userID");
			consulta = "UPDATE users SET state=1 WHERE userID='"+param[0]+"'";
			resultado = st.executeUpdate(consulta);
			//System.out.println("BBDD-10: Actualizamos state userID");
		}else{
			respuesta = "USERLOGIN#FALSE";
			//System.out.println("BBDD-10: User "+param[0]+" Login FALSE");
		}
		
		break;
		
	case 1:
		//a�adir Nuevo Usuario sign in		
		consulta = "INSERT INTO users (userID, webSocket, state, password) VALUES ('"+ param[0] +"','"+param[1]+"',"+Integer.parseInt(param[2])+",'"+param[3]+"')";
		resultado = st.executeUpdate(consulta);
		
		if(resultado>0){
			//System.out.println("BBDD-1: Usuario creado satisfactoriamente");
			respuesta="SIGNIN#TRUE";
		} else {
			//System.out.println("BBDD-1: Usuario existe o no creado satisfactoriamente");
			respuesta="SIGNIN#User alredy exist";
		}
			//System.out.println("BBDD-1: Usuario registrado");		
		break;
		
	case 2:
		//actualizar estado usuario
		consulta = "UPDATE users SET "+param[1]+"='"+param[2]+"' WHERE webSocket='"+param[0]+"'";
		resultado = st.executeUpdate(consulta);
		if(resultado>0){
			//System.out.println("BBDD-2: Cambios en userID "+ param[0]+" sobre "+param[1]+" guardados");
		}else{
			//System.out.println("BBDD-2: Cambios en userID "+ param[0]+" sobre "+param[1]+"no guardados");
		}
		break;
	case 3:
		//devolver valor columna tabla
		consulta = "SELECT * FROM users WHERE "+param[1]+"='"+param[2]+"'";
		resultado2 = st.executeQuery(consulta); 
		//System.out.println("BBDD-3: "+resultado2.findColumn(param[0]));
		while(resultado2.next()){
			respuesta = resultado2.getString(param[0].toString());
		}
		break;
	case 4:
		//Devolver Amigos Online registrados
		String friends[]=this.consultaBBDD("5",parametros).split("#");
		for(int i=0;i<friends.length;i++){
		consulta = "SELECT * FROM users WHERE (userID='"+friends[i]+"'"+"&& state=1)";
		resultado2 = st.executeQuery(consulta);
		
		while(resultado2.next()){
			respuesta = respuesta+resultado2.getString("userID")+"("+resultado2.getString("SipState")+")"+"#";
		}
		}
		//System.out.println("BBDD-4: Usuarios online: "+respuesta);
		break;
	case 5:
		//Devuelve amigos de Alguien
		consulta = "SELECT userID2 FROM friends WHERE userID1='"+parametros+"'";
		resultado2 = st.executeQuery(consulta);
		respuesta="FRIENDS#";
		while(resultado2.next()){
			respuesta = respuesta+resultado2.getString("userID2")+"#";
		}
		//System.out.println("BBDD-4: Amigos de "+parametros+" enviados : "+respuesta);
		break;
	case 6:
		//crear amigo
		consulta = "INSERT INTO friends (userID1, userID2) VALUES ('"+ param[0] +"','"+param[1]+"')";
		resultado = st.executeUpdate(consulta);
		if(resultado>0){
			//System.out.println("BBDD-6: Amigo en userID "+ param[0]+" sobre "+param[1]+" guardados");
		}else{
			//System.out.println("BBDD-6: Amigo en userID "+ param[0]+" sobre "+param[1]+"no guardados");
		}
		break;
	case 7:
		//eliminar amigo
		consulta = "DELETE FROM friends WHERE (userID1='"+param[0] +"' && "+"userID2='"+param[1] +"')";
		resultado = st.executeUpdate(consulta);
		if(resultado>0){
			//System.out.println("BBDD-7: eliminar Amigo en userID "+ param[0]+" sobre "+param[1]+" guardados");
		}else{
			//System.out.println("BBDD-7: eliminar Amigo en userID "+ param[0]+" sobre "+param[1]+"no guardados");
		}
		break;
	case 8:
		//devuelve consulta de petici�n de b�squeda de usuarios
		consulta = "SELECT * FROM users WHERE userID LIKE '%"+parametros+"%'";
		resultado2 = st.executeQuery(consulta);
		respuesta="SEARCH#";
		while(resultado2.next()){
			respuesta = respuesta+resultado2.getString("userID")+"#";
		}
		//System.out.println("BBDD-8: Busqueda de "+parametros+" enviados : "+respuesta);
		break;
	
	
	case 9:
		//Modificar estado SIP, puerto Tx y RX y TIME EXPIRER
		consulta = "UPDATE users SET SipState='"+param[1]+"', TXPort='"+param[2]+"', RXPort='"+param[3]+"', ExpirerTime='"+param[4]+"' WHERE webSocket='"+param[0]+"'";
		resultado = st.executeUpdate(consulta);
		if(resultado>0){
			//System.out.println("BBDD-9: Cambios en users guardados");
		}else{
			//System.out.println("BBDD-9: Cambios en users no guardados");
		}
		break;
	}
	conexion.close();
	
	return respuesta;
	
}
	
}
